package org.jgs1904.spring.demo03;

/**
 * @author: 默苍璃
 * @date: 2022-01-03 17:12
 * <p>
 * 客户 租房子
 */
public class Client {

    public static void main(String[] args) {

        //真实角色
        Host host = new Host();

        //代理角色 现在还没有
        ProxyInvocationHandler handler = new ProxyInvocationHandler();

        //通过调用 程序处理角色 来处理 要调用的 接口对象  多态
        handler.setRent(host);

        /**
         * 动态生成的
         *
         * 通过Proxy.newProxyInstance()方法我们可以获取到一个代理对象，
         * 首先需要知道的一点，这个代理对象是存储与内存中的，是项目启动后创建的，和
         * 我们平常正常编写的java代码不同。
         * 并且，由于JDK代理帮我们生成的代理对象实现了目标类所有的接口，
         * 所以我们获取的代理类，是可以向上转型的，即转换成接口类型。         *
         */
        Rent proxy = (Rent) handler.getProxy();

        proxy.rent();

    }

}
